#!/bin/sh
# set -eu
set -eux

# 如果配置文件存在且可读则直接执行
if [ -f ${CONFFILE} -a -r ${CONFFILE} ]; then
	exec "--config-file ${CONFFILE}" 
fi

# first arg is `-f` or `--some-option`
# or first arg is `something.conf`
if [ "${1#-}" != "$1" ] || [ "${1%.conf}" != "$1" ]; then
	set -- etcd "$@"
fi

# if [ "1" = "$#" -a "etcd" = "$1" ]; then
# 	exec "etcd --name=node1 --data-dir=${DATADIR} --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380"
# fi

# allow the container to be started with `--user`
# if [ "$1" = 'etcd' -a "$(id -u)" = '0' ]; then
# 	find . \! -user redis -exec chown redis '{}' +
# 	exec gosu redis "$0" "$@"
# fi

exec "$@"
# exec(选项)(参数)
# 选项
# -c：在空环境中执行指定的命令。
# exec -c echo Linux C++

# -e 脚本中的命令一旦运行失败就终止脚本的执行
# -x 用于显示出命令与其执行结果（默认shell脚本中只显示执行结果）
# -a 　标示已修改的变量，以供输出至环境变量。
# -b 　使被中止的后台程序立刻回报执行状态。
# -C 　转向所产生的文件无法覆盖已存在的文件。
# -d 　Shell预设会用杂凑表记忆使用过的指令，以加速指令的执行。使用-d参数可取消。
# -e 　若指令传回值不等于0，则立即退出shell。
# -f　 　取消使用通配符。
# -h 　自动记录函数的所在位置。
# -H Shell 　可利用"!"加<指令编号>的方式来执行history中记录的指令。
# -k 　指令所给的参数都会被视为此指令的环境变量。
# -l 　记录for循环的变量名称。
# -m 　使用监视模式。
# -n 　只读取指令，而不实际执行。
# -p 　启动优先顺序模式。
# -P 　启动-P参数后，执行指令时，会以实际的文件或目录来取代符号连接。
# -t 　执行完随后的指令，即退出shell。
# -u 　当执行时使用到未定义过的变量，则显示错误信息。
# -v 　显示shell所读取的输入值。
# -x 　执行指令后，会先显示该指令及所下的参数。
# +<参数> 　取消某个set曾启动的参数。

# $# 是传给脚本的参数个数
# $0 是脚本本身的名字
# $1 是传递给该shell脚本的第一个参数
# $2 是传递给该shell脚本的第二个参数
# $@ 是传给脚本的所有参数的列表
# $* 是以一个单字符串显示所有向脚本传递的参数，与位置变量不同，参数可超过9个
# $$ 是脚本运行的当前进程ID号
# $? 是显示最后命令的退出状态，0表示没有错误，其他表示有错误
# $- ——使用Set命令设定的Flag一览 
# $! ——Shell最后运行的后台Process的PID 